/**
 * @file DB0.h
 * @author your name (you@domain.com)
 * @brief 第0个数据块
 * @version 0.1
 * @date 2025-04-11
 *
 * @copyright Copyright (c) 2025
 *
 */
#ifndef DB0_H
#define DB0_H

#include "global.h"
#pragma pack(push, 1) /* 设置结构体对齐方式为1字节 */
// 嵌套结构体：传感器数据
typedef struct {
    uint16_t temperature; // 2 字节
    float    pressure;    // 4 字节
} SensorDB1_data;

// 主结构体
typedef struct {
    uint8_t        coils;           // offset 0: 8 个开关状态
    SensorDB1_data sensor;          // offset 1-6: 嵌套传感器数据
    uint8_t        switch_array[4]; // offset 7-10: 4 个开关值数组
                                    // 读4号寄存器switch[1-2]：01 03 00 04 00 01 c5 cb
                                    // 写：01 06 00 04 56 78 f7 89
    uint32_t counter;               // offset 11-14: 计数器
} MainS;
typedef struct {
    BitStruce Input[9];  /* 输入状态结构体数组 */
    BitStruce Output[6]; /* 输出状态结构体数组 */
    Bool      T00;       /* 定时器0 */
    Bool      T01;       /* 定时器1 */
    Bool      T02;       /* 定时器2 */
    Bool      T03;       /* 定时器3 */
    MainS     main_t;
} DB0_s;
#pragma pack(pop)
extern DB0_s* DB0_t; /* DB0数据块结构体实例 */
/**
 * @brief 初始化DB0
 *
 */
void init_DB0(void);
void loop_DB0(void);

#endif
